package com.hup.utils.swing.customView.viewTable2;

import com.hup.utils.swing.customView.viewTable2.ViewTableColumn.VSummaryHandler;
import com.hup.utils.swing.customView.viewTable2.ViewTableColumn.VTextRenderer;
import lombok.Data;

import javax.swing.SwingConstants;
import javax.swing.border.Border;
import java.lang.reflect.Field;

/**
 * @author hugan
 * @date 2024/5/28
 */
@Data
public class VColumnInfo {

    //===ViewTableColumn配置的字段
    /**
     * 列名
     */
    private String name;

    /**
     * 排序
     */
    private int order;

    /**
     * 列宽
     * 窗口缩放时,会按比例缩放
     */
    private Integer width;

    /**
     * 列宽
     * 窗口缩放时,固定宽度
     * 有限度大于 width
     */
    private Integer fixWidth;

    /**
     * 自定义[字段文本处理器]
     */
    private VTextRenderer<?> textRenderer;

    /**
     * 是否可编辑
     */
    private boolean editable;

    /**
     * true-双击进入编辑模式,但不能修改值
     */
    private boolean editPreview;

    /**
     * 表头 水平对齐方式:
     * {@link SwingConstants#CENTER},
     * {@link SwingConstants#LEFT},
     * {@link SwingConstants#RIGHT},
     */
    private int headerAlignment;

    /**
     * 数据行 水平对齐方式:
     * {@link SwingConstants#CENTER},
     * {@link SwingConstants#LEFT},
     * {@link SwingConstants#RIGHT},
     */
    private int valueAlignment;

    /**
     * 单元格左右padding
     */
    private int paddingX;

    /**
     * 表头tooltip
     */
    private String headerTooltip;

    /**
     * true-本列是[序号列]
     */
    private boolean isIndexColumn;

    /**
     * 统计行处理器
     */
    private VSummaryHandler<?> summaryHandler;

    //===反射字段
    /**
     * 类字段名
     */
    private String fieldName;

    /**
     * 字段clz
     */
    private Class<?> clz;

    /**
     * 字段Field, 用于[用户编辑单元格]时,同步更新model数据
     */
    private Field field;

    //===动态配置字段
    /**
     * 是否显示
     */
    private boolean visible;

    private String summaryText;

    private Border border;

}
